package utilities;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;

import com.jme3.scene.Spatial;

import controller.AbstractController;
import controller.IController;
import view.EViewList;
import view.AbstractView;
import view.IView;
import model.IModel;
import model.AbstractModel;

public final class MVCMaker {
	
	public static void linkElements(IModel model, Spatial spatial, IController controller) {
		//model.setSpatial(spatial);
		model.setController(controller);
		controller.setModel(model);
		controller.addSpatial(spatial);
		//view.setController(controller);
		//view.setModel(model);
		//view.initView();
	}
	
	public static void linkElements(IModel model, ArrayList<Spatial> spatials, IController controller) {
		model.setController(controller);
		controller.setModel(model);
		
		for (Spatial spatial: spatials) {
			controller.addSpatial(spatial);
		}
		
		
	}
	
//	public static void linkElements(IModel model, ArrayList<AbstractView> views, ArrayList<IController> controllers) {
//		
//		if (views.size() != controllers.size()) {
//			//throw error
//		}
//		
//		for (AbstractView view: views) {
//			model.attach(view);
//			//model.setController(controller);
//		}
//		
//		int j = 0;
//		for (IController controller: controllers) {
//			controller.setModel(model);
//			controller.setSpatial(views.get(j));
//			j++;
//		}
//		
//		IView tempView;
//		for (int i = 0; i < views.size(); i++) {
//			tempView = views.get(i);
//			tempView.setController(controllers.get(i));
//			tempView.setModel(model);
//			//tempView.initView();			
//		}
//	}
	

	
//	public static void linkElements(IModel model, ArrayList<AbstractView> views, IController controller) {
//		
//		controller.setModel(model);
//		model.setController(controller);
//		
//		for (AbstractView view: views) {
//			model.attach(view);
//			controller.setSpatial(view);
//			view.setController(controller);
//			view.setModel(model);
//			//view.initView();
//		}
//		
//	}
	
//	public static void linkElements(IModel model, HashMap<EViewList, AbstractView> views, IController controller) {
//		
//		controller.setModel(model);
//		model.setController(controller);		
//		
//		for (Map.Entry<EViewList, AbstractView> entry : views.entrySet()) {
//			AbstractView view = entry.getValue();
//			
//			model.attach(view);
//			controller.setSpatial(view);
//			view.setController(controller);
//			view.setModel(model);
//			//view.initView();
//		}		
//	}
	
	
	
	
	
}
